package com.mt.baseinfo.enums;
/*
* 加入我前端勾选TYPE1，TYPE2 ，前端将 00000001和00000010 相加转为十进制得到3
* 后端收到3 存入数据库
* 查询时，查出3 将3传给前端，前端通过十进制转2进制，勾选对应的类型
* */

public enum TypeEnum {
    //00000001  前端使用 00000001 表示当前类型
    TYPE1(1, "类型1"),
    //00000010
    TYPE2(1 << 1, "类型1"),
    //00000100
    TYPE3(1 << 2, "类型1"),
    //00001000
    TYPE4(1 << 3, "类型1"),
    //00010000
    TYPE5(1 << 4, "类型1"),
    //00100000
    TYPE6(1 << 5, "类型1"),
    //01000000
    TYPE7(1 << 6, "类型1"),
    //10000000
    TYPE8(1 << 7, "类型1");

    public int value;
    public String name;

    TypeEnum(int value, String name) {
        this.value = value;
        this.name = name;
    }

    // 新增添加一个类型
    public static int addFlag(int org, TypeEnum newFlag) {
        return org | newFlag.value;
    }

    // 移除一个类型
    public static int removeFlag(int org, TypeEnum oldFlag) {
        return org & (~oldFlag.value);
    }

    // 是否含有当前类型
    public static boolean hasFlag(int org, TypeEnum oldFlag) {
        return (org & oldFlag.value) > 0;
    }
}
